<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组常用的方法</title>
</head>
<body>
    <script type="text/javascript">
        /*
        // 内置对象Array
        var arr = [1,2,3];
        var a = arr.toString();
        var b = arr.toLocaleString();
        console.log(a);
        console.log(b);
        */

        /*
       var person1 = {
           toLocaleString : function() {
               return 'dev';
           },
           toString:function(){
               return 'dev1';
           }
       }
       var person2 = {
           toLocaleString:function(){
               return 'test';
           },
           toString:function(){
               return 'test1';
           }
       }
       var people = [person1,person2];
       console.log(people);
       console.log(people.toString());
       console.log(people.toLocaleString());
       */


        // 数组的join方法: 分割字符串
        /*
        var colors = ['red','blue','green'];
        var a = colors.join(',');
        console.log(a);
        */

        // 栈(lifo last - in - first -out)方法和队列方法
        // push()往数组的最后一项添加内容
        /*
        var newlength = colors.push('purple');
        console.log(newlength);
        console.log(colors);
        // pop() 从数组末尾删除最后一项
        var lastItem = colors.pop();
        console.log(lastItem);
        console.log(colors);
        */

        // 队列fifo 先进先出
        // shift() 删除数组的第一个元素
        // unshift() 往数组的第一个元素添加内容
        /*
        newlength = colors.unshift('yellow');
        console.log(newlength);
        console.log(colors);

        var firstItem = colors.shift();
        console.log(firstItem);
        console.log(colors);
        */



        // 数组排序
        /*
        var values = [0,3,2,16,15,10];
        // 数组倒序
        // values.reverse();
        // console.log(values);

        // sort() 排序  升序或者降序
        // values.sort();
        // console.log(values); // [0, 10, 15, 16, 2, 3]
        */

        // function compare(a,b){
            /*
            // a 位于b之前
            if (a < b ) {
                return -1;
            }else if(a > b) {
                return 1;
            }else{
                return 0;
            }
            */
        //    return a - b;
        // }

        // values.sort(compare);  // 升序
        // console.log(values);


        // function compare2(a,b){
            /*
            // a 位于b之后
            if (a < b ){
                return 1;
            }else if(a > b){
                return -1;
            }else{
                return 0;
            }
            */
        //    return b - a;
        // }

        // values.sort(compare2); // 降序
        // console.log(values);


        // 数组的操作方法 concat()  slice() splice()
        // 1. concat() 数组合并
        /*
        var colors = ['red','blue'];
        // var newColors = colors.concat('green');
        // newColors = colors.concat({name: 'zhangsan'});
        // console.log(newColors);

        // 2. slice()将当前数组中的一个或者多个项创建一个新数组.
        var newcolors = colors.concat({name:"lisi"},['black','purple']);
        console.log(newcolors);

        // newcolors = newcolors.slice(1,2);
        newcolors = newcolors.slice(-2,-1);
        console.log(newcolors);
        */

        // 3. splice()删除 插入  替换
        // 3.1 删除
        /*
        var names=['张三','李四','王五','Jacky'];
        // names.splice(0,2);
        // console.log(names);

        // 3.2 插入
        names.splice(1,0, '熊大大','jack');
        console.log(names);

        // 3.3 替换
        names.splice(1,1, 'xiongdada');
        console.log(names);
        */


        // 数组的位置方法 indexOf() 和lastIndexOf()
        /*
        var names = ['张三','mjj','王五','mjj','赵六'];
        alert(names.indexOf('mjj'));
        alert(names.lastIndexOf('mjj'));
        alert(names.indexOf('mjj',2));
        alert(names.lastIndexOf('mjj',2));
        */


        // 5. 数组的迭代方法
        // 5.1 filter() 将数组的元素进行过滤.
        var numbers = [1,2,3,6,19,4,20];

        var filterResult = numbers.filter(function(item,index,array){
            return item > 10
        });
        console.log(filterResult);


        // 5.2 map()方法

        var mapresult = numbers.map(function(item,index,array){
            return item * 2;
        });
        console.log(mapresult);

        for(var i = 0; i < mapresult.length; i++) {
            console.log(mapresult[i]);
        }

        // 5.3 forEach()
        mapresult.forEach(function(item,index){
            console.log(item);
        });
    </script>
</body>
</html>